package com.team2.hospital.controller;

import com.team2.hospital.entity.Drug;
import com.team2.hospital.service.DrugService;
import com.team2.hospital.utils.ResponseData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("drug")
public class DrugController {
    @Autowired
    private DrugService drugService;

    /**
     * 分页模糊查询所有药物信息
     *
     * @param pageNumber 当前页码
     * @param size       每页大小
     * @param query      查询条件
     * @return 返回药物信息
     */
    @RequestMapping("findAllDrugs")
    public ResponseData findAllDrugs(int pageNumber, int size, String query) {
        System.out.println("[findAllDrugs] 请求开始，时间：" + System.currentTimeMillis() + "，pageNumber：" + pageNumber + "，size：" + size + "，query：" + query);
        // 调用 drugService 分页查询药物信息
        return ResponseData.success("返回所有药物信息成功", this.drugService.findAllDrugs(pageNumber, size, query));
    }

    /**
     * 根据ID查找药物
     *
     * @param drId 药物ID
     * @return 返回药物信息
     */
    @RequestMapping("findDrug")
    public ResponseData findDrug(int drId) {
        System.out.println("[findDrug] 请求开始，时间：" + System.currentTimeMillis() + "，drId：" + drId);
        // 调用 drugService 根据ID查找药物信息
        return ResponseData.success("根据ID查找药物成功", this.drugService.findDrug(drId));
    }

    /**
     * 根据ID减少药物数量
     *
     * @param drId       药物ID
     * @param usedNumber 使用数量
     * @return 返回减少药物数量结果
     */
    @RequestMapping("reduceDrugNumber")
    public ResponseData reduceDrugNumber(int drId, int usedNumber) {
        System.out.println("[reduceDrugNumber] 请求开始，时间：" + System.currentTimeMillis() + "，drId：" + drId + "，usedNumber：" + usedNumber);
        // 调用 drugService 减少药物数量
        if (this.drugService.reduceDrugNumber(drId, usedNumber)) {
            return ResponseData.success("根据ID删除药物数量成功");
        }
        return ResponseData.fail("根据ID删除药物数量失败");
    }

    /**
     * 增加药物信息
     *
     * @param drug 药物信息
     * @return 返回增加药物结果
     */
    @RequestMapping("addDrug")
    @ResponseBody
    public ResponseData addDrug(Drug drug) {
        System.out.println("[addDrug] 请求开始，时间：" + System.currentTimeMillis() + "，drug：" + drug);
        // 调用 drugService 增加药物信息
        Boolean bo = this.drugService.addDrug(drug);
        if (bo) {
            return ResponseData.success("增加药物信息成功");
        }
        return ResponseData.fail("增加药物信息失败！药物名称已被占用或信息不完整");
    }

    /**
     * 删除药物信息
     *
     * @param drId 药物ID
     * @return 返回删除药物结果
     */
    @RequestMapping("deleteDrug")
    public ResponseData deleteDrug(@RequestParam(value = "drId") int drId) {
        System.out.println("[deleteDrug] 请求开始，时间：" + System.currentTimeMillis() + "，drId：" + drId);
        // 调用 drugService 删除药物信息
        Boolean bo = this.drugService.deleteDrug(drId);
        if (bo) {
            return ResponseData.success("删除药物信息成功");
        }
        return ResponseData.fail("删除药物信息失败");
    }

    /**
     * 修改药物信息
     *
     * @param drug 药物信息
     * @return 返回修改药物信息结果
     */
    @RequestMapping("modifyDrug")
    @ResponseBody
    public ResponseData modifyDrug(Drug drug) {
        System.out.println("[modifyDrug] 请求开始，时间：" + System.currentTimeMillis() + "，drug：" + drug);
        // 调用 drugService 修改药物信息
        this.drugService.modifyDrug(drug);
        return ResponseData.success("修改药物信息成功");
    }

}
